﻿using ServiceContainer.Jobs;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Topshelf;


namespace ServiceContainer
{
    class Program
    {
        static void Main(string[] args)
        {
            //1.我们用HostFactory.Run来设置一个宿主主机。我们初始化一个新的lambda表达式X，来显示这个宿主主机的全部配置。
            HostFactory.Run(x =>                                            
            {
                //2.告诉Topshelf ，有一个类型为“QuartzServiceRunner服务”,通过定义的lambda 表达式的方式，配置相关的参数。
                x.Service<QuartzServiceRunner>(s =>                                 
                {
                    //3.告诉Topshelf如何创建这个服务的实例，目前的方式是通过new 的方式，但是也可以通过Ioc 容器的方式：getInstance<towncrier>()。
                    s.ConstructUsing(name => new QuartzServiceRunner());

                    //4.开始 Topshelf 服务。
                    s.WhenStarted(tc => tc.Start());
                    //5.停止 Topshelf 服务。
                    s.WhenStopped(tc => tc.Stop());                     

                });
                //6.这里使用RunAsLocalSystem() 的方式运行，也可以使用命令行(RunAsPrompt())等方式运行。
                x.RunAsLocalSystem();                                  
                //x.StartAutomatically();
                //7.设置服务在服务监控中的描述。

                x.SetDescription("爱车仕项目服务，主要执行爱车仕项目的一些定时任务");
                //8.设置服务在服务监控中的显示名字。           
                x.SetDisplayName("爱车仕项目服务");
                //9.设置服务在服务监控中的服务名字。
                x.SetServiceName("AiCheShi-ClientServiceContainer");
                var log4FileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "configs\\log4Net.config");                    
                x.UseLog4Net(log4FileName,true);
            });
        }


    }
}
